(use srfi-1)
(use file.util)

;;TODO exclude these lines.
;; <A HREF=http://www.2ch.net/ TARGET="_top">2chの入り口</A><br>
;; <A HREF=http://info.2ch.net/guide/>2ch総合案内</A>
;; <BR><BR><B>チャット</B><BR>
;; <A HREF=http://irc.2ch.net/ TARGET=_blank>２ｃｈ＠ＩＲＣ</A><BR>
;; <BR><B>運営案内</B><BR>
;; <A HREF=http://info.2ch.net/guide/adv.html>ガイドライン</A><br>
;; <A HREF=http://members.tripod.co.jp/Backy/del_2ch/>削除屋ＭＬ</A><br>
;; <A HREF=http://info.2ch.net/mag.html>2chメルマガ</A><BR>
;; <A HREF=http://www.yakin.cc/>夜勤の巣</A><BR>
;; <A HREF=http://2ch.tora3.net/>●売り場</A>
;; <BR>削除要請は<BR><A HREF=http://qb5.2ch.net/saku/>削除依頼</A>へ
;; <BR>苦情は<BR><A HREF=http://ex24.2ch.net/accuse/>批判要望</A>へ
;; <BR>おいらの<A HREF=mailto:2ch@2ch.net>メール</A><BR>いたづらはいやづら
;; <BR><BR><B>ツール類</B><BR>
;; <BR><BR><B>まちＢＢＳ</B><BR>
;; <A HREF=http://www.machi.to/ TARGET=_blank>TOPページ</A><br>
;; <A HREF=http://www.machi.to/tawara/ TARGET=_blank>会議室</A><br>
;; <A HREF=http://hokkaido.machi.to/hokkaidou/ TARGET=_blank>北海道</A><br>
;; <A HREF=http://tohoku.machi.to/touhoku/ TARGET=_blank>東北</A><br>
;; <A HREF=http://kousinetu.machi.to/kousinetu/ TARGET=_blank>北陸・甲信越</A><br>
;; <A HREF=http://kanto.machi.to/kanto/ TARGET=_blank>関東</A><br>

;; <A HREF=http://tokyo.machi.to/tokyo/ TARGET=_blank>東京</A><br>
;; <A HREF=http://kanto.machi.to/tama/ TARGET=_blank>多摩</A><br>
;; <A HREF=http://kanto.machi.to/kana/ TARGET=_blank>神奈川</A><br>
;; <A HREF=http://tokai.machi.to/toukai/ TARGET=_blank>東海</A><br>
;; <A HREF=http://kinki.machi.to/kinki/ TARGET=_blank>近畿</A><br>
;; <A HREF=http://kinki.machi.to/osaka/ TARGET=_blank>大阪</A><br>
;; <A HREF=http://chugoku.machi.to/cyugoku/ TARGET=_blank>中国</A><br>
;; <A HREF=http://sikoku.machi.to/sikoku/ TARGET=_blank>四国</A><br>
;; <A HREF=http://kyusyu.machi.to/kyusyu/ TARGET=_blank>九州</A><br>
;; <A HREF=http://okinawa.machi.to/okinawa/ TARGET=_blank>沖縄</A>
;; <BR><BR><B>他のサイト</B><BR>
;; <A HREF=http://www.gazo-box.com/ TARGET=_blank>画箱</A><br>
;; <A HREF=http://www.megabbs.com/ TARGET=_blank>megabbs</A><br>
;; <A HREF=http://www.milkcafe.net/ TARGET=_blank>MILKCAFE</A><br>
;; <A HREF=http://bbnews.jp/ TARGET=_blank>BBNews</A><br>
;; <A HREF=http://svnews.jp/ TARGET=_blank>レンサバ比較</A><br>
;; <A HREF=http://ma-na.biz/ TARGET=_blank>ペンフロ</A><br>

;; <BR><BR><B>特別企画</B><BR>
;; <A HREF=http://find.2ch.net/enq/board.php>アンケート</A><br>

(define (main args)
  (define result '())
  (define current '())
  (define title "")
  (for-each (lambda (x)
	      (cond 
	       ((string? x)
		(unless (null? current)
		  (push! result (cons title (reverse! current))))
		(set! current '())
		(set! title x))
	       ((list? x)
		(push! current x))))
	    (append (filter-map (lambda (line)
				  (rxmatch-cond 
				    ((#/<BR><BR><B>([^<]+)<\/B><BR>/ line)
				     (#f title)
				     title)
				    ((#/<A HREF=http:\/\/([^<\/]+)\/([^<\/]+)\/(?:>| TARGET=_blank>|)([^<]+)<\/A>/ line)
				     (#f host board title)
				     (list host board title))
				    (else #f)))
				(file->string-list (second args)))
		    '("END")))
  (if (> 3 (length args))
    (for-each (lambda (x)
		(let ((key (car x))
		      (value (cdr x)))
		  (unless (zero? (length value))
		    (format #t "<li class=\"folder unselectable collapsed\" onclick=\"toggle_folder(this);\">\n<a class=\"link\">\n<img alt=\"\" src=\"images/tree-view-folder-closed.gif\" class=\"icon icon-d-1\" height=\"16\" width=\"16\">\n<span title=\"~a\" class=\"name name-d-1 name-unread\">\n<span class=\"name-text name-text-d-1\">~a</span>\n</span>\n</a>\n<ul>\n" key key)
		    (for-each (lambda (x)
				(let ((host (first x))
				      (board (second x))
				      (title (third x)))
				  (format #t "<li class=\"sub unselectable collapsed unread\">\n<a href=\"./ktkr.html?board=~a\" class=\"link bbsmenu\">\n<span title=\"~a\" class=\"name name-d-2\">\n<span class=\"name-text name-text-d-2\">~a</span>\n</span>\n</a>\n</li>\n"
					  (string-append "http://" host "/" board) title title)))
			      value)
		    (format #t "</ul>\n</li>\n"))))
	      (reverse! result))
    (for-each print (delete-duplicates (map (lambda (x)
					      (string-append "\"http://" (car x) "/" (cadr x) "\":True,"))
					    (concatenate (map cdr result)))))))


